package com.dream.frame.common.log

import com.dream.frame.common.extend.logger
import com.lmax.disruptor.ExceptionHandler

/**
 * 自定义异步日志异常处理器
 * 实现LMAX Disruptor库的ExceptionHandler接口
 * 用于处理异步日志记录过程中发生的异常
 */
class CustomAsyncLogExceptionHandler : ExceptionHandler<Any> {

    /**
     * 处理事件处理期间发生的异常
     *
     * @param ex 抛出的异常
     * @param sequence 事件序列号
     * @param event 正在处理的事件
     */
    override fun handleEventException(ex: Throwable, sequence: Long, event: Any?) {
        logger.error("异步日志处理事件异常 - 序列号: $sequence, 事件: $event", ex)
    }

    /**
     * 处理启动期间发生的异常
     *
     * @param ex 抛出的异常
     */
    override fun handleOnStartException(ex: Throwable) {
        logger.error("异步日志启动异常", ex)
    }

    /**
     * 处理关闭期间发生的异常
     *
     * @param ex 抛出的异常
     */
    override fun handleOnShutdownException(ex: Throwable) {
        logger.error("异步日志关闭异常", ex)
    }
}